package com.qike.huadongexcel.service;

import com.qike.huadongexcel.controller.ResultListVo;
import com.qike.huadongexcel.dto.AddProjectDto;
import com.qike.huadongexcel.dto.DelProjectDto;
import com.qike.huadongexcel.dto.LoginDto;
import com.qike.huadongexcel.dto.ResultSave;
import com.qike.huadongexcel.vo.DBFileListVo;
import com.qike.huadongexcel.vo.LoginVo;
import com.qike.huadongexcel.vo.ProjectListVo;
import com.qike.huadongexcel.vo.UserVo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;

public interface ExcelService {

    LoginVo login(LoginDto loginDto) throws Exception;

    /**
     * 我创建的项目
     * @param id
     * @return
     */
    List<ProjectListVo> myProject();


    /**
     * 添加项目
     * @param addProjectDto
     */
    void addProject(AddProjectDto addProjectDto) throws Exception;

    /**
     * 删除项目
     * @param id
     */
    void delProject(DelProjectDto delProjectDto) throws Exception;

    /**
     * 员工列表 不包含本人
     * @param uid
     * @return
     */
    List<UserVo> userList(Integer projectId);

    /**
     * 下载数据库表
     * @param projectId
     */
    void DBFileDownLoad(String filePath,String fileName, HttpServletResponse response) throws FileNotFoundException;

    /**
     * 上传数据库表
     * @param file
     */
    void DBFileUpLoad(MultipartFile file,Integer projectId) throws Exception;


    /**
     * 数据库表列表
     * @param projectId
     * @return
     */
    List<DBFileListVo> DBFileList(Integer projectId) throws IOException;

    /**
     * 运行宏
     * @param projectId
     */
    void excelStart(Integer projectId) throws IOException;

    /**
     * 结果文件列表
     * @param uid
     * @param projectId
     * @return
     */
    List<ResultListVo> resultList( Integer projectId) throws IOException;

    /**
     * 结果文件下载
     * @param filePath
     * @param fileName
     * @param response
     */
    void resultDownLoad(String filePath, String fileName, HttpServletResponse response) throws IOException;

    /**
     * 结果文件暂存
     * @param filePath
     * @param fileName
     * @param response
     */
    void resultSave(ResultSave resultSave) throws Exception;
}
